package com.itheima.common;

public class BaseContext {
    /**
     * ThreadLocal
     * 线程内数据共享变量
     * tomcat处理前端的每一个请求,使用的是一个线程来处理,我们可以在指定的线程内存储数据共享
     * 我们可以通过过滤器获取登陆人的id, 写入ThreadLocal中, 然后在自动填充的时候, 可以从单位的线程获取ThreadLocal里面的数据, 就可以获取到登陆人的id
     *
     * ThreadLocal底层原理里面封装了一个Map(存储key和value数据)
     * 为每一个线程存储数据
     */
    private static ThreadLocal<Long> threadLocal = new ThreadLocal<>();

    public static void setCurrentId(Long id){
        //本质是将当前线程id作为key, 传入这个方法的数据作为value 存储为一个键值对
        threadLocal.set(id);
    }

    public static long getCurrentId(){
        //本质会获取当前线程的id作为key, 获取对应的value
        return threadLocal.get();
    }
}
